
def ksm(a,b,c):
    ans=1
    while b!=0:
        if b&1:
            ans=ans*a%c
        a=a*a%c
        b>>=1
    return ans

n,m=map(int,input().split())
mod=10**9+7
phi=mod-1
# n^(m!)%p
# 欧拉降幂  n^(m!%phi(p)+phi(p)) %p
x=1
ok=False
# 计算阶乘
for i in range(1,m+1):
    x=x*i
    if x>=phi:
        x=x%phi
        ok=True
if ok:
    x+=phi
print(ksm(n,x,mod))